package student.aistar.day13;

import java.io.*;

/**
 * 奔雷用来演示: 使用了一个自定义的缓冲数组
 * 磁盘文件 ->                              内存          -> 磁盘
 *      一次性可以读取
 *      buf.length个字节                   buf              0, len
 *
 *      减少了java程序和磁盘的IO交互次数
 *
 */
public class ByteArrayDemo {
    public static void main(String[] args) throws Exception {
        InputStream in = null;
        OutputStream out = null;

        in = new FileInputStream("C:\\Users\\qinfeng\\Pictures\\广西美食\\images.jpg");
        out = new FileOutputStream("C:\\Users\\qinfeng\\Pictures\\广西美食\\images3.jpg");

        //定义一个缓冲数组 3kb - 实际的业务需求决定
        byte buf[] = new byte[3 * 1024];
        //定义一个变量
        int len = -1;
        //计算文件大小
        int total = 0;

        //循环读取
        while (true){
            len = in.read(buf);//从输入流中读取一定数量的字节放入到缓冲数组中,并且返回给len[当前总共读取到的字节数]

            if(len == -1)
                break;

            //证明buf中存储读取到的字节数据
            //String(byte[] buf); //利用一个字符数组来构建一个String
            System.out.println(new String(buf));

            out.write(buf, 0, len);
            total += len;
        }


        System.out.println("文件大小总数为: " + total);

        in.close();
        out.close();
    }
}
